<?php
namespace Macaca\Module;

use Monkey;

class Linker {

    /**
     * @var Monkey\App
     */
    public $app;

    /**
     * @var \Monkey\Router\Router
     */
    public $router;

    /**
     * @param Monkey\App $app
     */
    public function __construct($app) {
        $this->app = $app;
        $this->router = $app->router();
    }

    /**
     * 组装相对网址链接，不会自动加上 .html 扩展名
     *
     * @param string $pattern 路径模式  get/test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * 其中请求方法get是可选的 如 /test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * @param string $parameters 参数  array('language'=>'en','year'=>'2014','id'=4025
     *
     * @return string  /.../test/abc-en/blog/2014-4025
     */
    public function to($pattern, $parameters = null) {
        return $this->router->toURL($pattern, $parameters, false);
    }

    /**
     * 组装相对网址链接，自动加上 .html 扩展名
     *
     * @param string $pattern 路径模式  get/test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * 其中请求方法get是可选的 如 /test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * @param string $parameters 参数  array('language'=>'en','year'=>'2014','id'=4025
     *
     * @return string  /.../test/abc-en/blog/2014-4025
     */
    public function toFix($pattern, $parameters = null) {
        return $this->router->toURL($pattern, $parameters, true);
    }

    /**
     * 还原路径
     *
     * @param string $pattern 路径模式  get/test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * 其中请求方法get是可选的 如 /test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * @param string $parameters 参数  array('language'=>'en','year'=>'2014','id'=4025
     *
     * @return string  /test/abc-en/blog/2014-4025
     */
    public function toPath($pattern, $parameters = null) {
        return $this->router->toPath($pattern, $parameters);
    }

    /**
     * 组装绝对网址链接，不强制使用https协议
     *
     * @param string $pattern 路径模式  get/test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * 其中请求方法get是可选的 如 /test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * @param string $parameters 参数  array('language'=>'en','year'=>'2014','id'=4025
     *
     * @return string  http://www.host.com/.../test/abc-en/blog/2014-4025
     */
    public function toAbs($pattern, $parameters = null) {
        return $this->router->toAbsURL($pattern, $parameters, false);
    }

    /**
     * 组装绝对网址链接，强制使用https协议
     *
     * @param string $pattern 路径模式  get/test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * 其中请求方法get是可选的 如 /test/abc-{zh|en}/blog/{year}-([1-9]\d*):language:year:id
     * @param string $parameters 参数  array('language'=>'en','year'=>'2014','id'=4025
     *
     * @return string  http://www.host.com/.../test/abc-en/blog/2014-4025
     */
    public function toAbsHttps($pattern, $parameters = null) {
        return $this->router->toAbsURL($pattern, $parameters, true);
    }

} 